package models

// QueryBuilderDTO 表示查询构建器的数据传输对象
type QueryBuilderDTO struct {
	Columns     []string      `json:"columns"`
	Table       string        `json:"table"`
	WhereClause []string      `json:"whereClause"`
	WhereArgs   []interface{} `json:"whereArgs"`
	Joins       []JoinDTO     `json:"joins"`
	GroupBy     []string      `json:"groupBy"`
	Having      string        `json:"having"`
	HavingArgs  []interface{} `json:"havingArgs"`
	OrderBy     []string      `json:"orderBy"`
	LimitVal    *int          `json:"limitVal"`
	OffsetVal   *int          `json:"offsetVal"`
}

// JoinDTO 表示JOIN子句的数据传输对象
type JoinDTO struct {
	JoinType  string `json:"joinType"`
	Table     string `json:"table"`
	Condition string `json:"condition"`
}

// DatabaseErrorDTO 表示数据库错误的数据传输对象
type DatabaseErrorDTO struct {
	Message       string       `json:"message"`
	Code          string       `json:"code"`
	SQLState      string       `json:"sqlState"`
	DBType        DatabaseType `json:"dbType"`
	IsConstraint  bool         `json:"isConstraint"`
	IsRetryable   bool         `json:"isRetryable"`
	Query         string       `json:"query,omitempty"`
	OriginalError string       `json:"originalError"`
	Timestamp     string       `json:"timestamp"`
}
